define([
	'../libs/zepto',
	'../common/ajax',
	'../common/dialog',
	'../common/yingSoftPrg',
	'../common/yingSoftCookie',
	'../common/yingSoftPrg',
	'../common/storage',
	'../common/yingSoftSetTest'
],function(){
	G_Prg.popMsg('您当前处于背题模式');
	$('#popMsgDiv').css('margin-left','-90px');
	
	var beitiTitle = GetQueryString('title');
	$('.title').html(decodeURI(beitiTitle));
	$('.dati').css('display','block');
	
	var whole_height = window.innerHeight;
	var head_height = $('.common_header').height();
	$('.chapter_source').css('height',whole_height-head_height);
	var _gCpmArrNodes = []; //存储菜单显示的数据
	var _gCpmArrTitle = []; //存储用户选择过的标题
	var TestNum = 0; //当前章节总试题数，默认为0
	var _gCpmArrData = [];
	var _gIsVip = false;//用户是否已购买当前科目
	var clickNum = true;
	var width = $('.jindu').width();
	var value1 = G_Prg.getQueryString('value1');
	var value2 = G_Prg.getQueryString('value2');
	var curMenu = []; 
	
	
	this.init = function(){
		var userID = G_Cookie.getUserID();
		var curMenu1=_getChapterMenuData();
		if (userID){
			if(typeof(G_ChapterCache)!=='undefined'){
				_gCpmArrData = G_ChapterCache.getChapterInfo();
			}
			_gIsVip = G_Prg.checkVipApp();
		}
		var appEName = G_Cookie.getAppEName();
		var appENameArr = {
			'JC_EJJZS_JDGCGL':true,
			'JC_EJJZS_JSGCFG':true,
			'JC_EJJZS_JSSGGL':true
		}
		if(!appEName){
			G_Prg.alert('请先选择科目。',function(){
				location.href = '/switchMenu';
			});
			return;
		}
		if(appEName in appENameArr){
			var internalData={"ID":'JC_EJJZS1',"Name":"内部资料","NodeType":"Source","DoneNum":0,"TestNum":0,"Childs":[{"ID":'JC_EJJZS2',"Name":"考前押题","NodeType":"Subject","DoneNum":0,"TestNum":0,"Childs":[{"ID":'JC_EJJZS3',"Name":"押题内容将于考前半个月陆续更新，敬请期待！","NodeType":"Chapter","DoneNum":0,"TestNum":0,"Childs":null}]}]};
			curMenu1.push(internalData);
		}
		
		curMenu = curMenu1[value1].Childs[value2].Childs;
		beiti(decodeURI(beitiTitle));
	}
	init();
	/********************************************************************************
	 函数名：getTestNum
	 递归填充用户已答、错题数据等到章节列表的第一第二级
	 输入参数: data 章节json数据 userInfo 用户做题数据数组
	 返回值：returnData 当前章节用户做题数据
	 ********************************************************************************/
	function _getTestNum (data,userInfo){
		var testNum = 0;
		var doneNum = 0;
		var rightCount = 0;
		for(var i=0;i<data.length;i++){
			var curMenu = data[i];
			if(curMenu.NodeType === 'Chapter'){
				var cptInfo = _getUserInfo(curMenu.ID,userInfo);
				curMenu.DoneNum = cptInfo.testCount;
				curMenu.RightCount = cptInfo.RightCount;
			}else{
				var menuInfo = _getTestNum(curMenu.Childs,userInfo);
				curMenu.TestNum = menuInfo.TestNum;
				curMenu.DoneNum = menuInfo.DoneNum;
				curMenu.RightCount = menuInfo.RightCount;
			}
			testNum = testNum + curMenu.TestNum;
			doneNum = doneNum + curMenu.DoneNum;
			rightCount = rightCount + curMenu.RightCount;
		}
		if(doneNum>testNum){
			testNum= doneNum;
		}
		var returnData = {
			"TestNum" : testNum,
			"DoneNum" : doneNum,
			"RightCount" : rightCount
		};
		return returnData;
	}
	/********************************************************************************
	 函数名：getUserInfo
	 功能：获取某个章节用户的做题数据信息
	 输入参数: cptID 章节ID, data 用户做题数据数组
	 ********************************************************************************/
	function _getUserInfo(cptID,data){
		var userInfo = {
			"testCount" : 0,
			"RightCount" : 0
		};
		for(var i=0;i<data.length;i++){
			if(data[i].CptID === cptID){
				userInfo.testCount = data[i].testCount;
				userInfo.RightCount = data[i].RightCount;
				break;
			}
		}
		return userInfo;
	}
	/********************************************************************************
	函数名：setcpmArrNodes
	功能：设置全局数组数据
	输入参数: cptID 章节ID, curMenu 菜单数组
	返回值：无
	********************************************************************************/
	function _setcpmArrNodes(cptID, srcData) {
		for (var i = 0; i < srcData.length; i++) {
			srcName=srcData[i].Name;
			srcID = srcData[i].ID;
			sbjData = srcData[i].Childs;
			for (var j = 0; j < sbjData.length; j++) {
				sbjName=sbjData[j].Name;
				sbjID = sbjData[j].ID;
				cptData = sbjData[j].Childs;
				for (var k = 0; k < cptData.length; k++) {
					if (cptData[k].ID === cptID) {
						_gCpmArrNodes.push(sbjData);
						_gCpmArrNodes.push(cptData);
						_gCpmArrTitle.push(srcName);
						_gCpmArrTitle.push(sbjName);
						return;
					}
				}
			}
		}
	}
	/********************************************************************************
	函数名：getChapterMenuData
	功能：获取章节目录（若本地保存有章节最新数据，则从本地取数据，否则从接口取数据，然后将数据存在本地）
	输入参数: appEName 软件英文名
	返回值：updateTime 章节目录更新时间
	********************************************************************************/
	function _getChapterMenuData(){
		var appEName = G_Cookie.getAppEName();
		if(!appEName){
			G_Prg.throw('程序运行错误，chapterMenu._getChapterMenuData: appEName = "' + appEName + '",获取数据出现异常！');
		}
		var curMenu='';
		if(G_Storage.checkLocalStorageSupport()){
			var chapterMenu=G_Storage.getLocalStorageValue('chapterMenuData');
			//缓存中有当前科目的章节目录，从服务器端获取更新时间，判断缓存中的数据是否是最新
			if(chapterMenu&&appEName===chapterMenu.AppEName){
				var updateTime=_getChapterMenuUpdateTime(appEName);
				if(updateTime===chapterMenu.UpdateTime){
					curMenu=JSON.parse(chapterMenu.Data).Childs;
					return curMenu;
				}
			}
		}
		//章节目录无缓存或者章节目录缓存不是最新的，重新获取数据，把缓存清空
		if(window.localStorage){
			var cacheKey = 'chapterCache_' + G_Cookie.getAppID() + '_' +G_Cookie.getUserID();
			localStorage.setItem(cacheKey, null);
		}
		var chapterMenuData=_loadChapterMenu(appEName);
		var chapterMenuJson={
			"Data":chapterMenuData.ChapterMenuJson,
			"AppEName":appEName,
			"UpdateTime":chapterMenuData.ChapterMenuUpdateTime
		};
		curMenu = JSON.parse(chapterMenuData.ChapterMenuJson).Childs;
		if(G_Storage.checkLocalStorageSupport()){
			G_Storage.setLocalStorageValue('chapterMenuData',chapterMenuJson);
		}
		return curMenu;
	}
	/********************************************************************************
	函数名：loadChapterMenu
	功能：获得接口数据
	输入参数: 无
	返回值：chapterData根节点Childs数据
	********************************************************************************/
	function _loadChapterMenu(appEName){
		var chapterData = '';
		G_AjaxApi_Record.get('/api/chapterMenu/getChapterMenuX?appEName=' + appEName, false, function (json) {//
			var jsonData = JSON.parse(json);
			 if (jsonData.status === 200) {//获得有数据成功
				chapterData = jsonData.data;
			}else if(jsonData.status === 300){
				G_Prg.throw('程序运行错误！："' + jsonData.msg + '"！');
				//G_maiDian.setBugRecordInfos('程序错误','章节练习——获取章节目录',jsonData.status+':'+jsonData.msg);
			} else if(jsonData.status >= 400 && jsonData.status < 500){
				//G_maiDian.setBugRecordInfos('业务逻辑错误','章节练习——获取章节目录',jsonData.status+':'+jsonData.msg);
			} else{
				G_Prg.throw('程序运行错误！："无法处理"！');
				//G_maiDian.setBugRecordInfos('其它程序错误','章节练习——获取章节目录',jsonData.status+':'+jsonData.msg);
			}
		});
		return chapterData;
	}
	/********************************************************************************
	函数名：getChapterMenuUpdateTime
	功能：获取章节目录更新时间
	输入参数: appEName 软件英文名
	返回值：updateTime 章节目录更新时间
	********************************************************************************/
	function _getChapterMenuUpdateTime(appEName){
		var updateTime='';
		G_AjaxApi_Record.get('/api/chapterMenu/getChapterMenuUpdateTimeX?appEName='+appEName,false,function(json){
			var jsonData = JSON.parse(json);
			if (jsonData.status === 200) {//获得有数据成功
				updateTime = jsonData.data.ChapterMenuUpdateTime;
			}else if(jsonData.status === 300){
				G_Prg.throw('程序运行错误！："' + jsonData.msg + '"！');
				//G_maiDian.setBugRecordInfos('程序错误','章节练习——获取章节目录更新时间',jsonData.status+':'+jsonData.msg);
			} else if(jsonData.status >= 400 && jsonData.status < 500){
				//G_maiDian.setBugRecordInfos('业务逻辑错误','章节练习——获取章节目录更新时间',jsonData.status+':'+jsonData.msg);
			} else{
				G_Prg.throw('程序运行错误！："无法处理"！');
				//G_maiDian.setBugRecordInfos('其它程序错误','章节练习——获取章节目录更新时间',jsonData.status+':'+jsonData.msg);
			}
		});
		return updateTime;
	}
	/********************************************************************************
	函数名：loadChapterHistoryCptid
	功能：获得接口数据
	输入参数: userID 用户ID
	返回值：cptidData批阅过得章节
	********************************************************************************/
	function _loadChapterHistoryCptid(userID) {
		var appEName = G_Cookie.getAppEName();
		var appID = G_Cookie.getAppID();
		var arrData = '';
		if (!appEName || !userID) {
			G_Prg.throw('程序运行错误，loadChapterMenu: appEName = "' + appEName + '","userID = "' + userID + '",获取数据出现异常！');
		}
		var url = '/api/chapterMenu/getCptStatistics?appID=' + appID  + '&guid=' + G_Cookie.getGuid();
		G_AjaxApi_Record.get(url, false, function (json) {
			var jsonData = JSON.parse(json);
			if (jsonData.status === 200 || jsonData.status === 201) {//获得有数据成功
				arrData = jsonData.data;
			}else if (jsonData.status === 300) {
				G_Prg.throw('程序运行错误！："' + jsonData.msg + '"！');
				//G_maiDian.setBugRecordInfos('程序错误','章节练习——获取批阅过的章节',jsonData.status+':'+jsonData.msg);
			} else if(jsonData.status >= 400 && jsonData.status < 500){
				//G_maiDian.setBugRecordInfos('业务逻辑错误','章节练习——获取批阅过的章节',jsonData.status+':'+jsonData.msg);
			} else{
				G_Prg.throw('程序运行错误！："无法处理"！');
				//G_maiDian.setBugRecordInfos('其它程序错误','章节练习——获取批阅过的章节',jsonData.status+':'+jsonData.msg);
			}
		});
		return arrData;
	}

	function _showLast(){
		G_Prg.$('chapterName').innerHTML = _gCpmArrTitle[_gCpmArrTitle.length - 1];
		G_Prg.$('Source').innerHTML = '';
		G_Prg.$('Source_last').innerHTML = '';
		var liTag = document.createElement('li');
		liTag.innerHTML = '押题内容将于考前一周内全部更新完毕<br>敬请期待！';
		liTag.className = 'InternalData';
		G_Prg.$('Source_last').appendChild(liTag);
	}
	/********************************************************************************
	函数名：setTopChapterMenu
	功能：显示章节目录数据
	输入参数: curMenu 菜单数组  格式如： "Childs": [{"Childs": null, "ID": "ZY_GWSJJN", "Name": "公卫执业医师实践技能"}， ]
	返回值：无
	********************************************************************************/
		
	function beiti(beitiTitle){
		$('.dati').attr('value',2);
		$('.content').html('');
		var str = '<ul class="beiti_ullist"></ul>' 
		$('.content').html(str);
		myscroll.scrollToElement('.beiti_ullist',1);
		for(var i = 0; i < curMenu.length; i ++){
			var m = '<li class="beiti" value="'+ curMenu[i].ID +'" title="'+ curMenu[i].Name +'"><span class="beiti_title">'+(i + 1)+ '.' + curMenu[i].Name +
				'</span><span class="totalCount">共'+ curMenu[i].TestNum +'题</span><img src="/images/getInto.png" /></li>'
			$('.beiti_ullist').append(m);
		}
		myscroll.refresh();
		
		
		
		$('.beiti').unbind('click').click(function(){
            $('#loadingDiv').css('display','block');
			window.location.href = '/beiti?fromUrl=chapterBeiti&m='+ value1 + '&n=' + value2 + '&title=' + $('.title').html() + '&cptid=' + ($(this).attr('value')) + '&tit=' + $(this).attr('title');
		});
		
		$('.back').click(function(){
			window.location.href = '/chapterThree?fromUrl=chapterBeiti&value1='+ value1 + '&value2=' + value2 + '&title=' + beitiTitle;
		});
		$('.dati').click(function(){
			window.location.href = '/chapterThree?fromUrl=chapterBeiti&value1='+ value1 + '&value2=' + value2 + '&title=' + beitiTitle;
		});
	}
		
		
	// 截取网址上传递的参数	
	function GetQueryString(name) {  
	    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");  
	    var r = window.location.search.substr(1).match(reg);  //获取url中"?"符后的字符串并正则匹配
	    var context = "";  
	    if (r != null)  
	         context = r[2];  
	    reg = null;  
	    r = null;  
	    return context == null || context == "" || context == "undefined" ? "" : context;  
	}
	


	
	/********************************************************************************
	功能：页面跳转
	输入参数: url 页面跳转的url
	返回值：无
	最后修改人（时间）：韦友爱（2015-01-19）
	修改内容：创建
	*******************************************************************************/
	function _pageJump(url){
		G_Prg.$('loadingDiv').style.display = 'block';
		G_Prg.$('Source_last').style.display = 'none';
		window.location.href = url;
	}
	
	 function getTestFromServer(cptID, appID, callback){
	 	var data = '';
        var URL = '/api/exam/getChapterTestJustTest';
        var params = {
        	appID:appID,
        	cptID:cptID,
        	userID:G_Cookie.getUserID(),
        	userName:G_Cookie.getUserName(),
        	guid:G_Cookie.getGuid()
        }
        var success = function (json) {
            var jsonObj = JSON.parse(json);
            if (jsonObj.status === 200) {	//200 获取数据成功
               data = jsonObj.data;
            } else if (jsonObj.status === 201) {	//201 没有数据；
                G_Prg.throw('程序运行错误，没有您要查找的试题数据！', callback);
            } else if (jsonObj.status === 300) {	//300 连接数据库失败
                //G_maiDian.setBugRecordInfos('程序错误', '做题页面——获取章节练习试题', jsonObj.status + ':' + jsonObj.msg);
                G_Prg.throw('程序运行错误，TestData._getAllTestJSON,数据库获取数据异常');
            } else if (jsonObj.status >= 400 && jsonObj.status < 500) {
                //G_maiDian.setBugRecordInfos('业务逻辑错误', '做题页面——获取章节练习试题', jsonObj.status + ':' + jsonObj.msg);
            } else {
                //G_maiDian.setBugRecordInfos('其它程序错误', '做题页面——获取章节练习试题', jsonObj.status + ':' + jsonObj.msg);
                G_Prg.throw('不能处理，TestData._getAllTestJSON:status=' + jsonObj.status);
            }
        };
        G_AjaxApi_Record.post(URL, params, false, success);
        return data;
    }
	
	
       
	// 获取题目信息
	function getTestFromCache(cptID){
		var data = '';
            var params = {
            	appID:G_Cookie.getAppID(),
            	cptID:cptID,
            	userID:G_Cookie.getUserID(),
            	userName:G_Cookie.getUserName(),
            	guid:G_Cookie.getGuid()
            }
            var URL = '/api/exam/getChapterTestInfoX?appID='+G_Cookie.getAppID()+'&&cptID='+cptID+'&&guid='+G_Cookie.getGuid();
            var success = function (json) {
                var jsonObj = JSON.parse(json);
                if (jsonObj.status === 200) {	//200 获取数据成功
                   data = jsonObj.data;
                } else if (jsonObj.status === 300) {	//300 连接数据库失败
                    //G_maiDian.setBugRecordInfos('程序错误', '做题页面——获取用户做题数据info包', jsonObj.status + ':' + jsonObj.msg);
                    G_Prg.throw('程序运行错误，TestData._getAllTestJSON,数据库获取数据异常');
                } else if (jsonObj.status >= 400 && jsonObj.status < 500) {
                    //G_maiDian.setBugRecordInfos('业务逻辑错误', '做题页面——获取用户做题数据info包', jsonObj.status + ':' + jsonObj.msg);
                } else {
                   // G_maiDian.setBugRecordInfos('其它程序错误', '做题页面——获取用户做题数据info包', jsonObj.status + ':' + jsonObj.msg);
                    G_Prg.throw('不能处理，TestData._getAllTestJSON:status=' + jsonObj.status);
                }
            };
            G_AjaxApi_Record.get(URL, false, success);
			return data;
        }

	
	/********************************************************************************
	函数名：iOSreturn
	功能：苹果商店功能
	输入参数: 无
	返回值：无
	*******************************************************************************/
	function iOSreturn(){
	    var username=G_Cookie.getUserID();
	    var softname=G_Cookie.getAppEName();
	    var answer=username+"/"+softname;
	    return answer;
	}
	
	// 背题模式
	function display_none(){
		var arr = [];
		function getAttr(){
			for(var i = 0; i < $('.exam_list').length; i ++){
				arr[i] = $('.exam_list').eq(i).attr('data-display');
			}
		}
		getAttr();
		$(".exam_list").on("click", function() {
			var index = $(this).index();
			if (arr[index] == 'none') {
				$(this).find('.problme_title').siblings().css('display','block');
				$(this).attr('data-display', 'block');
				arr[index] = $(this).attr('data-display');
				//$(this).siblings().find('.problme_title').siblings().css("display", "none");
			}else{
				$(this).find('.problme_title').siblings().css('display','none');
				$(this).attr('data-display', 'none');
				arr[index] = $(this).attr('data-display');
				//$(this).siblings().find('.problme_title').siblings().css("display", "none");
			}
			myscroll.refresh();
		})	
	}
});

	



	
